public class circularLinList {

private class Node
    {
    Object data;
    Node next;
    
   public Node(Object data, Node next)

        { 
        this.data = data;
        this.next = next;
    }


    public String toString()
        {
        return this.data.toString();
    }
} // end of node class


Node start;

public circularLinList()


    {start = null;}

    public String toString()


        {
        if(start==null)return "( )";
        Node temp = start.next;
        String retval = "( ";


            do{
            retval= (retval + temp.data.toString() + " ");
            temp = temp.next;
        }while(temp!=start.next);
        retval+=")";
        return retval;
    }
    public boolean isEmpty()


        {return (start==null);}
        
    
    public void clear()
            {start=null;}
        
            public void add(Object obj)


                {
                Node temp = new Node(obj,null);
                if(start==null)


                    {
                    temp.next = temp;
                    start = temp;
                    
                }
                else


                    {
                    temp.next = start.next;
                    start.next = temp;
                   //rear=temp;
                }
            }
            public Object delete()


                {
                if(isEmpty())return "empty list";
                Object temp = start.next.data;
                start.next = start.next.next;
                return temp;
            }
            public boolean find(Object target)


                {
                if(isEmpty())return false;
                Node temp = start.next;


                    do{
                    if(temp.data==target)return true;
                    temp=temp.next;
                }while(temp!=start.next);
                return false;
            }

            public void reverse()
               {
            	circularLinList temp = new circularLinList();
                Node temper = start.next;
                if(isEmpty()){}
                else
                    {
                        do{
                        temp.add(temper.data);
                        temper = temper.next;
                    }while(temper!=start.next);
                    start = temp.start;
                }
            }
            
            public static void main(String[] args)


                {
            	circularLinList x = new circularLinList();
                System.out.println(x);
                x.add("Umair");
                x.add("Mohsin"); 
                x.add("Rameez");
                x.add("Anum");
                System.out.println(x);
                System.out.println(x.find("Anum"));
                
                x.reverse();
                System.out.println(x);
            }
        } 